In known distributed software applications, software components are distributed among a plurality of executables (i.e., software capsules or software entities). Each of the executables contains one or more software components that perform some portion of the functionality of the distributed software application. The executables and software components of the distributed software application may all run on a single processor or may be divided up and run across a plurality of processors.
Upon startup of the distributed software application, each of the executables and software components are started. The distributed software application may have dependency relationships between the executables and/or software components of the distributed software application. As one shortcoming, without a proper startup sequence, the distributed software application may fail to completely achieve an active state of operation.
During operation of the distributed software application, state information is created, resources are allocated, and/or databases are updated. If the distributed software application shuts down without a preplanned shutdown sequence, then the distributed software application may be left in an inconsistent state. As one shortcoming, without a proper shutdown sequence, the distributed software application may not properly maintain the state information, release the allocated resources, and/or update the databases.
To handle dependency relationships between the executables and software components of the distributed software application, software developers need to write special software in each of the software components to handle startup and/or shutdown of the distributed software application. As one shortcoming, the software developers must write extra software for each software component to control the startup and/or shutdown. The extra software may need to be customized for a specific software application or system. Creating software for each software component to control startup and/or shutdown increases the amount of effort required by the software developers to create the software components.
Thus a need exists to initialize a distributed software application in a manner that achieves an active state of operation for the distributed software application. A further need exists to shut down a distributed software application in a manner that maintains state information, releases resources, and/or leaves the distributed software application in a consistent state. Yet another need exists to alleviate software components of the responsibility of controlling startup and/or shutdown.